package com.ruoyi.custom.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 财务数据对象 finance_data
 * 
 * @author ruoyi
 * @date 2025-08-15
 */
public class FinanceData extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 客户姓名 */
    @Excel(name = "客户姓名")
    private String customerName;

    /** 客户ID */
    private Long customerId;

    /** 业务员姓名 */
    @Excel(name = "业务员姓名")
    private String salesmanName;

    /** 业务员ID */
    private Long salesmanId;

    /** 分公司名称 */
    @Excel(name = "分公司名称")
    private String companyName;

    /** 分公司ID */
    private Long companyId;

    /** 业务类型 */
    @Excel(name = "业务类型", readConverterExp = "new_house=新房销售,second_hand=二手房,rental=租赁,commercial=商业地产")
    private String businessType;

    /** 客户类型 */
    @Excel(name = "客户类型", readConverterExp = "personal=个人客户,enterprise=企业客户,vip=VIP客户")
    private String customerType;

    /** 成交金额 */
    @Excel(name = "成交金额")
    private BigDecimal amount;

    /** 佣金 */
    @Excel(name = "佣金")
    private BigDecimal commission;

    /** 成交日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成交日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dealDate;

    /** 状态 */
    @Excel(name = "状态", readConverterExp = "completed=已完成,pending=待处理,cancelled=已取消")
    private String status;

    /** 渠道类型 */
    @Excel(name = "渠道类型", readConverterExp = "online=线上渠道,offline=线下渠道,partner=合作渠道,direct=直销渠道")
    private String channelType;

    /** 渠道名称 */
    @Excel(name = "渠道名称")
    private String channelName;

    /** 客户星级 */
    @Excel(name = "客户星级")
    private Integer starLevel;

    /** 累计成交金额 */
    private BigDecimal totalAmount;

    /** 成交次数 */
    private Integer dealCount;

    /** 平均成交金额 */
    private BigDecimal avgAmount;

    /** 转化率 */
    private BigDecimal conversionRate;

    /** 最近成交日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date lastDealDate;

    /** 负责人 */
    private String manager;

    /** 客户数量 */
    private Integer customerCount;

    /** 查询开始日期 */
    private String startDate;

    /** 查询结束日期 */
    private String endDate;

    /** 升级条件 */
    private String upgradeCondition;

    /** 最低金额 */
    private BigDecimal minAmount;

    /** 最少次数 */
    private Integer minCount;

    /** 目标星级 */
    private Integer targetStar;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setCustomerName(String customerName) 
    {
        this.customerName = customerName;
    }

    public String getCustomerName() 
    {
        return customerName;
    }

    public void setCustomerId(Long customerId) 
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }

    public void setSalesmanName(String salesmanName) 
    {
        this.salesmanName = salesmanName;
    }

    public String getSalesmanName() 
    {
        return salesmanName;
    }

    public void setSalesmanId(Long salesmanId) 
    {
        this.salesmanId = salesmanId;
    }

    public Long getSalesmanId() 
    {
        return salesmanId;
    }

    public void setCompanyName(String companyName) 
    {
        this.companyName = companyName;
    }

    public String getCompanyName() 
    {
        return companyName;
    }

    public void setCompanyId(Long companyId) 
    {
        this.companyId = companyId;
    }

    public Long getCompanyId() 
    {
        return companyId;
    }

    public void setBusinessType(String businessType) 
    {
        this.businessType = businessType;
    }

    public String getBusinessType() 
    {
        return businessType;
    }

    public void setCustomerType(String customerType) 
    {
        this.customerType = customerType;
    }

    public String getCustomerType() 
    {
        return customerType;
    }

    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }

    public void setCommission(BigDecimal commission) 
    {
        this.commission = commission;
    }

    public BigDecimal getCommission() 
    {
        return commission;
    }

    public void setDealDate(Date dealDate) 
    {
        this.dealDate = dealDate;
    }

    public Date getDealDate() 
    {
        return dealDate;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setChannelType(String channelType) 
    {
        this.channelType = channelType;
    }

    public String getChannelType() 
    {
        return channelType;
    }

    public void setChannelName(String channelName) 
    {
        this.channelName = channelName;
    }

    public String getChannelName() 
    {
        return channelName;
    }

    public void setStarLevel(Integer starLevel) 
    {
        this.starLevel = starLevel;
    }

    public Integer getStarLevel() 
    {
        return starLevel;
    }

    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public void setDealCount(Integer dealCount) 
    {
        this.dealCount = dealCount;
    }

    public Integer getDealCount() 
    {
        return dealCount;
    }

    public void setAvgAmount(BigDecimal avgAmount) 
    {
        this.avgAmount = avgAmount;
    }

    public BigDecimal getAvgAmount() 
    {
        return avgAmount;
    }

    public void setConversionRate(BigDecimal conversionRate) 
    {
        this.conversionRate = conversionRate;
    }

    public BigDecimal getConversionRate() 
    {
        return conversionRate;
    }

    public void setLastDealDate(Date lastDealDate) 
    {
        this.lastDealDate = lastDealDate;
    }

    public Date getLastDealDate() 
    {
        return lastDealDate;
    }

    public void setManager(String manager) 
    {
        this.manager = manager;
    }

    public String getManager() 
    {
        return manager;
    }

    public void setCustomerCount(Integer customerCount) 
    {
        this.customerCount = customerCount;
    }

    public Integer getCustomerCount() 
    {
        return customerCount;
    }

    public void setStartDate(String startDate) 
    {
        this.startDate = startDate;
    }

    public String getStartDate() 
    {
        return startDate;
    }

    public void setEndDate(String endDate) 
    {
        this.endDate = endDate;
    }

    public String getEndDate() 
    {
        return endDate;
    }

    public void setUpgradeCondition(String upgradeCondition) 
    {
        this.upgradeCondition = upgradeCondition;
    }

    public String getUpgradeCondition() 
    {
        return upgradeCondition;
    }

    public void setMinAmount(BigDecimal minAmount) 
    {
        this.minAmount = minAmount;
    }

    public BigDecimal getMinAmount() 
    {
        return minAmount;
    }

    public void setMinCount(Integer minCount) 
    {
        this.minCount = minCount;
    }

    public Integer getMinCount() 
    {
        return minCount;
    }

    public void setTargetStar(Integer targetStar) 
    {
        this.targetStar = targetStar;
    }

    public Integer getTargetStar() 
    {
        return targetStar;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("customerName", getCustomerName())
            .append("customerId", getCustomerId())
            .append("salesmanName", getSalesmanName())
            .append("salesmanId", getSalesmanId())
            .append("companyName", getCompanyName())
            .append("companyId", getCompanyId())
            .append("businessType", getBusinessType())
            .append("customerType", getCustomerType())
            .append("amount", getAmount())
            .append("commission", getCommission())
            .append("dealDate", getDealDate())
            .append("status", getStatus())
            .append("channelType", getChannelType())
            .append("channelName", getChannelName())
            .append("starLevel", getStarLevel())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
